# MySQL是Web世界中使用最广泛的数据库服务器。SQLite的特点是轻量级、可嵌入，
# 但不能承受高并发访问，适合桌面和移动应用。而MySQL是为服务器端设计的数据库，能承受高并发访问，同时占用的内存也远远大于SQLite。
# 此外，MySQL内部有多种数据库引擎，最常用的引擎是支持数据库事务的InnoDB。
# 安装MySQL驱动
# 由于MySQL服务器以独立的进程运行，并通过网络对外服务，所以，需要支持Python的MySQL驱动来连接到MySQL服务器。
# MySQL官方提供了mysql-connector-python驱动，但是安装的时候需要给pip命令加上参数--allow-external：
# $ pip install mysql-connector-python --allow-external mysql-connector-python
# 如果上面的命令安装失败，可以试试另一个驱动：
#
# $ pip install mysql-connector

from datetime import datetime

import personId, mysql.connector, random, re

a1 = ['张', '金', '李', '王', '赵']

a2 = ['玉', '明', '龙', '芳', '军', '玲']

a3 = ['', '立', '玲', '', '国', '']


def table_exists(conn, table_name):  # 这个函数用来判断表是否存在
    sql = "show tables;"
    conn.execute(sql)
    tables = [conn.fetchall()]
    table_list = re.findall('(\'.*?\')', str(tables))
    table_list = [re.sub("'", '', each) for each in table_list]
    if table_name in table_list:
        return 1  # 存在返回1
    else:
        return 0  # 不存在返回0


# 创建student表
sql = """create table student(
        card_id long not null,
        person_name char(10),
        person_age int,
        person_address char(20),
        person_birth char(30)) """


def create_table(conn, table_name):
    if (table_exists(conn, table_name) != 1):
        print("表不存在，可以添加一张")
        cursor.execute(sql)


def creat_time():
    now2 = datetime.now()
    return (now2 - datetime.timedelta(minutes=40)).strftime('%Y-%m-%d %H:%M:%S')


def getName():
    return random.choice(a1) + random.choice(a2) + random.choice(a3)


conn = mysql.connector.connect(user='root', password='123456', port=3306, charset='utf8', database='test02')
cursor = conn.cursor()
create_table(cursor, 'student')
# 单条数据
# sqll = 'insert into student (id, name) values (%s, %s)'
# id = personId.getRandomIdCard()
# cursor.execute(sqll, [id, getName()])
# 多条数据
sqmany = "insert into student (card_id, person_name,person_age,person_address,person_birth) values (%s, %s, %s, %s,%s)"


def insertMany():
    for x in range(100):
        cursor.execute(sqmany,
                       [personId.getRandomIdCard(), getName(), 16, 'F', datetime.now().strftime('%Y-%m-%d %H:%M:%S')])


# val = ((personId.getRandomIdCard(), getName(), 16, 'F', datetime.now().strftime('%Y-%m-%d %H:%M:%S')),
#        (personId.getRandomIdCard(), getName(), 30, 'F', datetime.now().strftime('%Y-%m-%d %H:%M:%S')),
#        (personId.getRandomIdCard(), getName(), 40, 'M', datetime.now().strftime('%Y-%m-%d %H:%M:%S')),
#        (personId.getRandomIdCard(), getName(), 18, 'M', datetime.now().strftime('%Y-%m-%d %H:%M:%S')))
# cursor.executemany(sqmany, val)
insertMany()
# 插入后提交，否则插入不成功
conn.commit()
sql2 = 'select * from student '
cursor.execute(sql2)
values = cursor.fetchall()
print(values)
cursor.close()
conn.close()
# use 数据库;
# rop table 表;
